// 定义默认配置项
const defaults = {
    // 设置默认的请求方式
    methods: "get"
}

class Axios {
    // 构造器函数
    constructor(instanceConfig) {
        // 增加实例属性defaults
        this.defaults = instanceConfig;
    }
    request(){
        console.log("request",this);
    }
}

function createInstance(defaultConfig) {
    // 创建一个Axios实例赋值给常量context;
    const context = new Axios(defaultConfig);
    // instance的本质：Axios.prototype.request(将该函数的this指向到了context)
    const instance = Axios.prototype.request.bind(context);
    return instance;
}

// 将createInstance 函数运行的结果赋值给常量axios;
// defaults是默认的配置项。
const axios = createInstance(defaults);
// 默认导出axios
export default axios;